Micron Document
`:top
Die `!Box-Muller-Methode`! (nach `F33f`_`[George Edward Pelham Box`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=George_Edward_Pelham_Box]`_`f und `F33f`_`[Mervin Edgar Muller`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Mervin_Edgar_Muller]`_`f 1958) ist ein Verfahren zur Erzeugung `F33f`_`[normalverteilter`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Normalverteilung]`_`f `F33f`_`[Zufallszahlen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zufallszahl]`_`f.

>>Contents

• `F0af`_`[Definition`#definition]`_`f
• `F0af`_`[Programmierung`#programmierung]`_`f
• `F0af`_`[Weblinks`#weblinks]`_`f
• `F0af`_`[Literatur`#literatur]`_`f
• `F0af`_`[Einzelnachweise`#einzelnachweise]`_`f

-─

>>Definition

Bei dieser Methode werden zunächst zwei unabhängige `F33f`_`[Standardzufallszahlen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standardzufallszahl]`_`f u 1 {\\displaystyle u_{1}} und u 2 {\\displaystyle u_{2}} benötigt. Diese lassen sich beispielsweise mit einem `F33f`_`[Zufallszahlengenerator`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zufallszahlengenerator]`_`f erzeugen. Standardzufallszahlen unterliegen einer `F33f`_`[Rechteckverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Rechteckverteilung]`_`f mit den Parametern 0 {\\displaystyle 0} und 1 {\\displaystyle 1} .

Es lässt sich zeigen, dass man nach folgendem Transformationsschritt daraus zwei `F33f`_`[standardnormalverteilte`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standardnormalverteilung]`_`f (stochastisch) unabhängige Zufallszahlen z 0 {\\displaystyle z_{0}} und z 1 {\\displaystyle z_{1}} erhält:

z 0 = − − 2 ln ⁡ ⁡ u 1 cos ⁡ ⁡ ( 2 π π u 2 ) {\\displaystyle z_{0}={\\sqrt {-2\\ln u_{1}}}\\cos(2\\pi u_{2})}

und

z 1 = − − 2 ln ⁡ ⁡ u 1 sin ⁡ ⁡ ( 2 π π u 2 ) {\\displaystyle z_{1}={\\sqrt {-2\\ln u_{1}}}\\sin(2\\pi u_{2})} .

Schreibt man das `F33f`_`[Paar`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Geordnetes_Paar]`_`f ( z 0 , z 1 ) {\\displaystyle (z_{0},z_{1})} in `F33f`_`[Polarkoordinaten`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Polarkoordinate]`_`f, also

z 0 = r cos ⁡ ⁡ φ φ {\\displaystyle z_{0}=r\\cos \\varphi } und z 1 = r sin ⁡ ⁡ φ φ {\\displaystyle z_{1}=r\\sin \\varphi } ,

dann gilt:

r = − − 2 ln ⁡ ⁡ u 1 {\\displaystyle r={\\sqrt {-2\\ln u_{1}}}\\ } und φ φ = 2 π π u 2 {\\displaystyle \\varphi =2\\pi u_{2}} .

Anwendung der `F33f`_`[Inversionsmethode`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Inversionsmethode]`_`f zur Transformation von u 1 {\\displaystyle u_{1}} und u 2 {\\displaystyle u_{2}} in die Polarkoordinaten r {\\displaystyle r} und φ φ {\\displaystyle \\varphi } zeigt, dass φ φ {\\displaystyle \\varphi } einer `F33f`_`[Rechteckverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Rechteckverteilung]`_`f mit den Parametern 0 {\\displaystyle 0} und 2 π π {\\displaystyle 2\\pi } unterliegt und r 2 {\\displaystyle r^{2}} einer `F33f`_`[Exponentialverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Exponentialverteilung]`_`f mit dem Parameter 1 2 {\\displaystyle {\\tfrac {1}{2}}} . Aus diesem Ergebnis lässt sich die `F33f`_`[gemeinsame Verteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Gemeinsame_Verteilung_von_Zufallsvariablen]`_`f von z 1 {\\displaystyle z_{1}} und z 2 {\\displaystyle z_{2}} herleiten. Sie beruht auf der Beziehung:

1 2 e − − 1 2 r 2 d ( r 2 ) 1 2 π π d φ φ = 1 2 π π e − − 1 2 r 2 r d r d φ φ = 1 2 π π e − − 1 2 ( z 0 2 + z 1 2 ) d z 0 d z 1 {\\displaystyle {\\tfrac {1}{2}}e^{-{\\frac {1}{2}}r^{2}}\\mathrm {d} (r^{2}){\\tfrac {1}{2\\pi }}\\mathrm {d} \\varphi ={\\tfrac {1}{2\\pi }}e^{-{\\frac {1}{2}}r^{2}}r\\mathrm {d} r\\mathrm {d} \\varphi ={\\tfrac {1}{2\\pi }}e^{-{\\frac {1}{2}}(z_{0}^{2}+z_{1}^{2})}\\mathrm {d} z_{0}\\mathrm {d} z_{1}}

Die bisherigen Transformationsschritte erzeugen zwei standardnormalverteilte Zufallszahlen. Eine Standardnormalverteilung ist ein Spezialfall der `F33f`_`[Normalverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Normalverteilung]`_`f, nämlich mit dem `F33f`_`[Erwartungswert`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Erwartungswert]`_`f μ μ = 0 {\\displaystyle \\mu =0} und der `F33f`_`[Varianz`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Varianz_(Stochastik)]`_`f σ σ 2 = 1 {\\displaystyle \\sigma ^{2}=1} .

Um mit der Box-Muller-Methode Normalverteilungen mit beliebigen Parametern zu erzeugen, lassen sich die erhaltenen z i {\\displaystyle z_{i}} nach dem Muster

x i = μ μ + σ σ ⋅ ⋅ z i {\\displaystyle x_{i}=\\mu +\\sigma \\cdot z_{i}}

transformieren. In der obigen Notation steht π π {\\displaystyle \\pi } wie üblich für die `F33f`_`[Kreiszahl`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Kreiszahl]`_`f, sin {\\displaystyle \\sin } für den `F33f`_`[Sinus`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Sinus]`_`f, cos {\\displaystyle \\cos } für den `F33f`_`[Kosinus`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Kosinus]`_`f und ln {\\displaystyle \\ln } für den `F33f`_`[natürlichen Logarithmus`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Natürlicher_Logarithmus]`_`f.

Verwendet man zur Erzeugung der u i {\\displaystyle u_{i}} einen `F33f`_`[linearen Kongruenzgenerator`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Linearer_Kongruenzgenerator]`_`f, so liegen die Paare ( z 0 , z 1 ) {\\displaystyle (z_{0},z_{1})} auf einer durch eine Spirale beschriebenen Kurve. Dieses Verhalten ist eng mit dem im `F33f`_`[Satz von Marsaglia`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Satz_von_Marsaglia]`_`f beschriebenen `F33f`_`[Hyperebenenverhalten`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Hyperebene]`_`f linearer Kongruenzgeneratoren verwandt.

Dieses Problem lässt sich umgehen, wenn statt des linearen Kongruenzgenerators ein `F33f`_`[inverser Kongruenzgenerator`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Inverser_Kongruenzgenerator]`_`f oder die `F33f`_`[Polar-Methode`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Polar-Methode]`_`f verwendet wird.

Die Box-Muller-Methode erzeugt zunächst zwei stochastisch unabhängige und standardnormalverteilte `F33f`_`[Zufallszahlen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zufallszahl]`_`f, die sich dann in eine `F33f`_`[Normalverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Normalverteilung]`_`f mit beliebigen Parametern transformieren lassen. Die Box-Muller-Methode erfordert die Auswertung von `F33f`_`[Logarithmen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Logarithmus]`_`f und `F33f`_`[trigonometrischen Funktionen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Trigonometrische_Funktion]`_`f, was auf einigen Rechnern sehr zeitaufwendig sein kann.

Weitere Möglichkeiten zur Erzeugung normalverteilter `F33f`_`[Zufallszahlen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zufallszahl]`_`f sind im Artikel `F33f`_`[Normalverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Normalverteilung]`_`f beschrieben. Eine Alternative ist z. B. die `F33f`_`[Polar-Methode`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Polar-Methode]`_`f.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]

>>Programmierung

Die Standard-Box-Muller-Methode erzeugt Werte aus der `F33f`_`[Standardnormalverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standardnormalverteilung]`_`f mit `F33f`_`[Erwartungswert`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Erwartungswert]`_`f 0 und `F33f`_`[Standardabweichung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standardabweichung]`_`f 1. Die folgende Implementierung in der `F33f`_`[Programmiersprache`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Programmiersprache]`_`f `F33f`_`[C++`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C++]`_`f generiert 10 Paare von standardnormalverteilten `F33f`_`[Zufallszahlen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zufallszahl]`_`f aus jeder `F33f`_`[Normalverteilung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Normalverteilung]`_`f mit Erwartungswert μ μ {\\displaystyle \\mu } und `F33f`_`[Varianz`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Varianz_(Stochastik)]`_`f σ σ {\\displaystyle \\sigma } und gibt sie auf der Konsole aus.

`B100`F9d9#define _USE_MATH_DEFINES`f`b
`B100`F9d9#include <random>`f`b
`B100`F9d9#include <iostream>`f`b
`B100`F9d9using namespace std;`f`b
`B100`F9d9`f`b
`B100`F9d9// Diese Funktion berechnet zwei standardnormalverteilte Zufallszahlen z0 und z1`f`b
`B100`F9d9pair<double, double> generateGaussianNoise(double mu, double sigma)`f`b
`B100`F9d9{`f`b
`B100`F9d9 constexpr double epsilon = numeric_limits<double>::epsilon();`f`b
`B100`F9d9`f`b
`B100`F9d9 // Initialisiert den Zufallszahlengenerator im Bereich von 0 bis 1`f`b
`B100`F9d9 static mt19937 rng(random_device{}()); // Standard Mersenne-Twister`f`b
`B100`F9d9 static uniform_real_distribution<> runif(0, 1);`f`b
`B100`F9d9`f`b
`B100`F9d9 double u1, u2; // Deklaration der lokalen Variablen für die Zufallszahlen u1 und u2`f`b
`B100`F9d9 do // Diese do-while-Schleife erzeugt solange Zufallszahlen bis u1 > epsilon ist`f`b
`B100`F9d9 {`f`b
`B100`F9d9 u1 = runif(rng);`f`b
`B100`F9d9 } while (u1 <= epsilon);`f`b
`B100`F9d9 u2 = runif(rng);`f`b
`B100`F9d9`f`b
`B100`F9d9 // Berechnet z0 und z1`f`b
`B100`F9d9 auto magnitude = sigma * sqrt(-2.0 * log(u1));`f`b
`B100`F9d9 auto z0 = magnitude * cos(2.0 * M_PI * u2) + mu;`f`b
`B100`F9d9 auto z1 = magnitude * sin(2.0 * M_PI * u2) + mu;`f`b
`B100`F9d9 return make_pair(z0, z1);`f`b
`B100`F9d9}`f`b
`B100`F9d9`f`b
`B100`F9d9// Hauptfunktion die das Programm ausführt`f`b
`B100`F9d9void main()`f`b
`B100`F9d9{`f`b
`B100`F9d9 double mu = 0; // Deklaration der lokalen Variablen`f`b
`B100`F9d9 double sigma = 1;`f`b
`B100`F9d9 for (int i = 0; i < 10; i++) // Diese for-Schleife berechnet 10 Paare von standardnormalverteilten Zufallszahlen und gibt sie auf der Konsole aus`f`b
`B100`F9d9 {`f`b
`B100`F9d9 pair<double, double> gaussianNoise = generateGaussianNoise(mu, sigma); // Aufruf der Funktion`f`b
`B100`F9d9 cout << gaussianNoise.first << "," << gaussianNoise.second << endl; // Ausgabe auf der Konsole`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

>>Weblinks

• `F33f`_`[Eric W. Weisstein`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Eric_Weisstein]`_`f: `*Box-Muller Transformation`*. In: `*`F33f`_`[MathWorld`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=MathWorld]`_`f`* (englisch).

>>Literatur

• George Edward Pelham Box, Mervin Edgar Muller: `*A note on the generation of random normal deviates.`* In: `*`F33f`_`[Annals of Mathematical Statistics`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Annals_of_Mathematical_Statistics]`_`f`*, Jg. 29 (1958), Heft 2, `F33f`_`[ISSN`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Internationale_Standardnummer_für_fortlaufende_Sammelwerke]`_`f 0003-4851, S. 610–611.
• `F33f`_`[Donald Ervin Knuth`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Donald_Ervin_Knuth]`_`f: `*`F33f`_`[The Art of Computer Programming`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=The_Art_of_Computer_Programming]`_`f`*, Sec. 3.4.1, S. 117.
• Otto Moeschlin, Eugen Grycko, Claudia Pohl, Frank Steinert: Kapitel 1.4 `*Generating Sample Values`*. In: Diess.: `*Experimental Stochastics.`* Springer, Berlin u. a. 1998, ISBN 3-540-14619-9.

>>Einzelnachweise

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f Vgl. Albert J. Kinderman und John G. Ramage: `*Computer Generation of Normal Random Numbers`*. In: `*Journal of the American Statistical Association`*, Jg. 71 (1976), Heft 356, S. 893–896.

`c`F0af`_`[↑ Back to top`#top]`_`f`a